#ifndef DYN_ODE_EULERMETHOD_H
#define DYN_ODE_EULERMETHOD_H

#include "dyn_ode.h"

/*! \brief Implementation of the Euler method.
 *
 * We implement the Euler method which is
 * \f[ y_{n+1} = y_n + hf(x_n,y_n) \f].
 * It is a rather weak algorithm, but it was mainly
 * developed to practice coding integrators.
 */

class EulerMethod : public ODE
{
public:
    /*! Constructor defines the variables
     * that are needed in this algorithm.
     */
    EulerMethod(MultiFunctor &func,
                colvec _initCond,
                double _start,
                double _end,
                double _stepsize);

    /*! @name Inherited pure virtual functions.
     * We reimplement the pure virtual functions.*/
    //@{
    colvec next(colvec previousStep);
    //@}
};

#endif // DYN_ODE_EULERMETHOD_H
